package pe.com.bbva.efcap.servidor.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import pe.com.bbva.efcap.servidor.modelo.entidad.ParametroGeneral;
import pe.com.bbva.efcap.servidor.servicio.AdministrarParametriaService;
import pe.com.bbva.efcap.servidor.util.Constante;

@Component("administrarParametriaMB")
@Scope("request")
public class AdministrarParametriaController implements Serializable {

	private static final long serialVersionUID = 1L;
	
	private String hdnIndicadorFormulario;
	
	@Autowired
	private AdministrarParametriaService administrarParametriaService;
	
	private String txtFormularioEscenarios;
	private String txtFormularioParametria;
	
	private boolean bolParametria;
	private boolean bolEscenarios;
	
	private int tamanioListaPeriodo;
	private int aniosRegistrados;
	
	//Listas BD
	private List<ParametroGeneral> listaPeriodos;
	private List<ParametroGeneral> listaEscenarios;
	private List<ParametroGeneral> listaParametros;
	
	
	
	@PostConstruct
	public void init() {
		listaPeriodos = new ArrayList<ParametroGeneral>();
		listaEscenarios = administrarParametriaService.listarParametroByShortName(Constante.NOMBRE_CORTO_ESCENARIOS_ESC);
		listaParametros = administrarParametriaService.listarParametroByShortName(Constante.NOMBRE_CORTO_PARAMETRIA_PARAM);
		txtFormularioEscenarios = "";
		txtFormularioParametria = "";
		visiblePanelParametria();
	}
	
	public String getTxtFormularioEscenarios() {return txtFormularioEscenarios;}
	public void setTxtFormularioEscenarios(String txtFormularioEscenarios) {this.txtFormularioEscenarios = txtFormularioEscenarios;}
	public String getTxtFormularioParametria() {return txtFormularioParametria;}
	public void setTxtFormularioParametria(String txtFormularioParametria) {this.txtFormularioParametria = txtFormularioParametria;}
	public boolean isBolParametria() {return bolParametria;}
	public void setBolParametria(boolean bolParametria) {this.bolParametria = bolParametria;}
	public boolean isBolEscenarios() {return bolEscenarios;}
	public void setBolEscenarios(boolean bolEscenarios) {this.bolEscenarios = bolEscenarios;}
	public String getHdnIndicadorFormulario() {	return hdnIndicadorFormulario;}
	public void setHdnIndicadorFormulario(String hdnIndicadorFormulario) {this.hdnIndicadorFormulario = hdnIndicadorFormulario;}
	public List<ParametroGeneral> getListaEscenarios() {return listaEscenarios;}
	public void setListaEscenarios(List<ParametroGeneral> listaEscenarios) {this.listaEscenarios = listaEscenarios;}
	public List<ParametroGeneral> getListaParametros() {return listaParametros;}
	public void setListaParametros(List<ParametroGeneral> listaParametros) {this.listaParametros = listaParametros;}
	public List<ParametroGeneral> getListaPeriodos() {return listaPeriodos;}
	public void setListaPeriodos(List<ParametroGeneral> listaPeriodos) {this.listaPeriodos = listaPeriodos;}
	public int getTamanioListaPeriodo() {return tamanioListaPeriodo;}
	public void setTamanioListaPeriodo(int tamanioListaPeriodo) {this.tamanioListaPeriodo = tamanioListaPeriodo;}
	public int getAniosRegistrados() {return aniosRegistrados;}
	public void setAniosRegistrados(int aniosRegistrados) {this.aniosRegistrados = aniosRegistrados;}

	
	public String saveParametro(){
		String [] param = txtFormularioParametria.split(",");
		aniosRegistrados = Integer.parseInt(param[3].toString()) / Constante.NUMERO_MESES_EN_ANIOS;
		
		if (aniosRegistrados == 0) {
			this.setAniosRegistrados(1);
		}
		
		if (aniosRegistrados >= 15) {
			this.setAniosRegistrados(15);
		}
		
		List<ParametroGeneral> myLista = administrarParametriaService.listarParametroByShortName(Constante.NOMBRE_CORTO_ESCENARIOS_ANIO);
		for (int i = 0; i < aniosRegistrados ; i++) {
			listaPeriodos.add(myLista.get(i));
		}
		
		String respuesta = administrarParametriaService
				.saveOrUpdateParametrosGenerales(txtFormularioEscenarios,
						txtFormularioParametria, listaPeriodos,listaEscenarios, listaParametros);
		
		System.out.println(respuesta);
		return "administrarParametria";
	}
	
	
	public void visiblePanelEscenarios(){
		
		String [] param = txtFormularioParametria.split(",");
		
		aniosRegistrados = Integer.parseInt(param[3]) / Constante.NUMERO_MESES_EN_ANIOS;
		
		if (aniosRegistrados == 0) {
			this.setAniosRegistrados(1);
		}
		
		if (aniosRegistrados >= 15) {
			this.setAniosRegistrados(15);
		}
		
		List<ParametroGeneral> myLista = administrarParametriaService.listarParametroByShortName(Constante.NOMBRE_CORTO_ESCENARIOS_ANIO);
		for (int i = 0; i < aniosRegistrados ; i++) {
			listaPeriodos.add(myLista.get(i));
		}
		
		bolEscenarios = true;
		bolParametria = false;
		this.setHdnIndicadorFormulario("E");
	}
	
	public void visiblePanelParametria(){
		bolEscenarios = false;
		bolParametria = true;
		this.setHdnIndicadorFormulario("P");
	}
	
}
